type FlipArguments<T extends Function> = T extends (...args: infer V) => infer R
  ? (...args: Reverse<V>) => R
  : never;

type Y1111 = FlipArguments<
  (arg0: string, arg1: number, arg2: boolean) => number
>;
